// 享元(flyweight) 模式是一种用于性能优化的模式，“ fly” 在这里是苍蝇的意思， 意为蝇量级。
// 享元模式的核心是运用共享技术来有效支持大量细粒度的对象。
// 如果系统中因为创建了大量类似的对象而导致内存占用过高，
// 享元模式就非常有用了。 在 JavaScript 中，
// 浏览器特别是移动端的浏览器分配的内存并不算多，
// 如何节省内存就成了一件非常有意义的事情。

// 假设有个内衣工厂， 目前的产品有 50 种男式内衣和 50 种女士内衣， 为了推销产品， 
// 工厂决定生产一些塑料模特来穿上他们的内衣拍成广告照片。 
// 正常情况下需要 50 个男模特和50个女模特， 然后让他们每人分别穿上一件内衣来拍照。

// 代码实现(未使用享元模式)

var Model = function(sex, underwear) {
    this.sex = sex;
    this.underwear = underwear;
};
Model.prototype.takePhoto = function() {
    console.log('sex= ' + this.sex + ' underwear=' + this.underwear);
};
for (var i = 1; i <= 50; i++) {
    var maleModel = new Model('male', 'underwear' + i);
    maleModel.takePhoto();
};
for (var j = 1; j <= 50; j++) {
    var femaleModel = new Model('female', 'underwear' + j);
    femaleModel.takePhoto();
};